package com.jxd.petMgr.service.impl;

import com.jxd.petMgr.dao.IAccountDao;
import com.jxd.petMgr.dao.IPetDao;
import com.jxd.petMgr.dao.IPetStoreDao;
import com.jxd.petMgr.dao.impl.AccountDaoImpl;
import com.jxd.petMgr.dao.impl.PetDaoImpl;
import com.jxd.petMgr.dao.impl.PetStoreDaoImpl;
import com.jxd.petMgr.model.Pet;
import com.jxd.petMgr.service.IPetService;
import com.jxd.petMgr.service.IPetStoreService;
import com.jxd.petMgr.util.PageUtil;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author lzh
 * @version 1.0
 * @Description
 * @date 2021/11/5
 */


public class PetServiceImpl implements IPetService {
    IPetDao petDao = new PetDaoImpl();
    IAccountDao accountDao = new AccountDaoImpl();
    IPetStoreService petStoreService = new PetStoreServiceImpl();
    IPetStoreDao petStoreDao = new PetStoreDaoImpl();
//
//    /**
//     * 得到所有宠物对象
//     *
//     * @return 宠物对象集合
//     */
//    @Override
//    public List<Pet> getAllPet() {
//        return petDao.getAllPet();
//    }


    /**
     * 根据主人id和分页信息获得宠物
     *
     * @param pageUtil
     * @param petOwnerId
     * @return 宠物对象集合
     */
    @Override
    public List<Pet> getPetByPetOwnerId(PageUtil pageUtil, int petOwnerId) {
        return petDao.getPetByPetOwnerId(pageUtil,petOwnerId);
    }

    /**
     * 根据主人id获取主人宠物的数量
     *
     * @param petOwnerId
     * @return
     */
    @Override
    public int getPetByPetOwnerIdCount(int petOwnerId) {
        return petDao.getPetByPetOwnerIdCount(petOwnerId);
    }

    /**
     * 得到所有宠物对象,以及所属商店
     *
     * @return 宠物对象集合
     */
    @Override
    public List<Map<String,Object>> getAllPetHaveShopName(PageUtil pageUtil,Map<String,String> mapInfo) {
//        List<Map<String,Object>> result = new ArrayList<>();
//        List<Pet> allPet = petDao.getAllPet();
//        for (int i = 0; i < allPet.size(); i++) {
//            Pet pet = allPet.get(i);
//            Map<String,Object> map = new HashMap<>();
//            map.put("id",pet.getId());
//            map.put("name",pet.getName());
//            map.put("typename",pet.getTypename());
//            map.put("price",pet.getPrice());
//            String shopName = "";
//            if (pet.getStore_id() != 0 && pet.getStore_id() != null){
//                //根据宠物的商店id获得宠物名称
//                shopName = petStoreDao.getPetStoreByID(pet.getStore_id()).getName();
//            }
//            map.put("shopName",shopName);
//            result.add(map);
//        }
//        return result;
        return petDao.getAllPetHaveShopName(pageUtil,mapInfo);
    }

    /**
     * 获得有宠物商店名的宠物数量
     *
     * @return
     */
    @Override
    public int getAllPetHaveShopNameCount(Map<String,String> mapInfo) {
        int count = 0;
        count = petDao.getAllPetHaveShopNameCount(mapInfo);
        return count;
    }


//    /**
//     * 获得所有库存中宠物对象
//     * 商店id等于拥有者id且有
//     * 交易记录中有过的宠物即为库存中宠物
//     *
//     * @return 库存中对象集合
//     */
//    @Override
//    public List<Pet> getAllPetInStock() {
//        List<Pet> list = new ArrayList<>();
////        List<Map<String,Object>> allPet = petDao.getAllPet();
//        List<Pet> allPet = petDao.getAllPet();
//        List<Pet> petCanBuy = new ArrayList<>();
//        List<Integer> petInAccount = accountDao.getAllPetInAccount();
//
//
//        //找出所有拥有者id为null或0的宠物
//        for (Pet pet : allPet) {
////            if (pet.get("owner_id") == null || pet.getOwner_id() == 0) {
////                petCanBuy.add(pet);
////            }
//            if (pet.getOwner_id() == null || pet.getOwner_id() == 0) {
//                petCanBuy.add(pet);
//            }
//        }
//
//        //找出所有在account中出现过的宠物的集合
//        for (Pet pet : petCanBuy) {
//            for (int i = 0; i < petInAccount.size(); i++) {
//                if (pet.getId() == petInAccount.get(i)) {
//                    list.add(pet);
//                    break;
//                }
//            }
//        }
//        return list;
//    }
//
//    /**
//     * 获得所有新培育宠物对象
//     * 商店id等于拥有者id且有
//     * 交易记录中没有过的宠物即为新培育宠物
//     *
//     * @return 库存中对象集合
//     */
//    @Override
//    public List<Pet> getAllPetNewBreed() {
//
//
//        List<Pet> list = new ArrayList<>();
//        List<Pet> allPet = petDao.getAllPet();
//        List<Pet> petCanBuy = new ArrayList<>();
//        List<Integer> petInAccount = accountDao.getAllPetInAccount();
//        //找出所有拥有者id为null或0的宠物
//        for (Pet pet : allPet) {
//            if (pet.getOwner_id() == null|| pet.getOwner_id() == 0) {
//                petCanBuy.add(pet);
//            }
//        }
//
//        //找出所有未在account中出现过的对象
//        for (Pet pet : petCanBuy) {
//            boolean flag = false;//是否在account中找到的标志
//            for (int i = 0; i < petInAccount.size(); i++) {
//                if (pet.getId() == petInAccount.get(i)) {
//                    flag = true;
//                    break;
//                }
//            }
//            if (!flag){
//                list.add(pet);
//            }
//        }
//        return list;
//    }
//
//    /**
//     * 获得所有宠物的数量
//     *
//     * @return
//     */
//    @Override
//    public int getAllPetCount() {
//        return getAllPet().size();
//    }

    /**
     * 获得宠物的所有种类
     *
     * @return 宠物种类集合
     */
    @Override
    public List<String> getAllTypeName() {
        return petDao.getAllTypeName();
    }

    /**
     * 根据宠物id获得宠物对象
     *
     * @param id 宠物id
     * @return 宠物对象
     */
    @Override
    public Pet getPetById(int id) {
        return petDao.getPetById(id);
    }

    /**
     * 通过宠物商店id获得宠物商店名称
     * @return
     */
    String getNameById(int id){
        return null;
    }


}
